package com.graduate.daydayup.view;

import android.content.Context;
import android.graphics.Color;
import android.view.View;


import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.graduate.daydayup.R;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;

/*
 *  @项目名：  TangYuan
 *  @包名：    com.beehome.tangyuan.view
 *  @文件名:   MyPickerView
 *  @创建者:   win10
 *  @创建时间:  2018/3/2 17:21
 *  @描述：    TODO
 */


public class MyPickerView {
    private OptionsPickerView<String> pickerView;
    OptionsPickerBuilder wheelOptions;
    private MyPickerView.OnOptionsSelectListener optionsSelectListener;
    ArrayList<String> options1Items;
    ArrayList<String> options2Items;
    ArrayList<String> options3Items;

    public MyPickerView(final Context context) {
        wheelOptions = new OptionsPickerBuilder(context, new com.bigkoo.pickerview.listener.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                optionsSelectListener.onOptionsSelect(options1, options2, options3);
            }
        })
                .setSubmitText("确定")//确定按钮文字
                .setCancelText("取消")//取消按钮文字
//                                .setTitleText("城市选择")//标题
                                .setSubCalSize(14)//确定和取消文字大小
                                .setTitleSize(16)//标题文字大小
                .setDividerColor(Color.WHITE)
                .setLineSpacingMultiplier(1.5f)
                .setTitleColor(context.getResources().getColor(R.color.colorMain))//标题文字颜色
                        .setSubmitColor(context.getResources().getColor(R.color.colorMain))//确定按钮文字颜色
                        .setCancelColor(context.getResources().getColor(R.color.colorMain))//取消按钮文字颜色
                        .setTitleBgColor(Color.WHITE)//标题背景颜色 Night mode
                        .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
                        .setContentTextSize(20)//滚轮文字大小
        //                .setLinkage(false)//设置是否联动，默认true
        //                .setLabels("省", "市", "区")//设置选择的三级单位
        //                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
        //                .setCyclic(false, false, false)//循环与否
        //                .setSelectOptions(1, 1, 1)  //设置默认选中项
                        .setOutSideCancelable(false)//点击外部dismiss default true
                        .isDialog(true)//是否显示为对话框样式
        //                .isRestoreItem(true);//切换时是否还原，设置默认选中第一项。
        ;

    }

    public void setPicker(ArrayList<String> optionsItems) {
        setPicker(optionsItems, null, false);//添加数据源
    }

    public void setPicker(ArrayList<String> options1Items,
                          ArrayList<String> options2Items, boolean linkage) {
        setPicker(options1Items, options2Items, null,false);//添加数据源
    }

    public void setPicker(ArrayList<String> options1Items,
                          ArrayList<String> options2Items,
                          ArrayList<String> options3Items,
                          boolean linkage) {
        this.options1Items = options1Items;
        this.options2Items = options2Items;
        this.options3Items = options3Items;
    }

    /**
     * 设置选中的item位置
     *
     * @param option1
     */
    public void setSelectOptions(int option1) {
        wheelOptions.setSelectOptions(option1, 0, 0);
    }

    /**
     * 设置选中的item位置
     *
     * @param option1
     * @param option2
     */
    public void setSelectOptions(int option1, int option2) {
        wheelOptions.setSelectOptions(option1, option2, 0);
    }

    /**
     * 设置选中的item位置
     *
     * @param option1
     * @param option2
     * @param option3
     */
    public void setSelectOptions(int option1, int option2, int option3) {
        wheelOptions.setSelectOptions(option1, option2, option3);
    }

    /**
     * 设置选项的单位
     *
     * @param label1
     */
    public void setLabels(String label1) {
        wheelOptions.setLabels(label1, null, null);
    }

    /**
     * 设置选项的单位
     *
     * @param label1
     * @param label2
     */
    public void setLabels(String label1, String label2) {
        wheelOptions.setLabels(label1, label2, null);
    }

    /**
     * 设置选项的单位
     *
     * @param label1
     * @param label2
     * @param label3
     */
    public void setLabels(String label1, String label2, String label3) {
        wheelOptions.setLabels(label1, label2, label3);
    }

    /**
     * 设置是否循环滚动
     *
     * @param cyclic
     */
    public void setCyclic(boolean cyclic) {
        wheelOptions.setCyclic(cyclic, cyclic, cyclic);
    }

    public void setCyclic(boolean cyclic1, boolean cyclic2, boolean cyclic3) {
        wheelOptions.setCyclic(cyclic1, cyclic2, cyclic3);
    }

    public void show() {
        pickerView = wheelOptions.build();
        pickerView.setNPicker(options1Items, options2Items, options3Items);//添加数据源
        pickerView.show();
    }

    public void setOnoptionsSelectListener(
            MyPickerView.OnOptionsSelectListener optionsSelectListener) {
        this.optionsSelectListener = optionsSelectListener;
    }

    public void setTitle(String title) {
        wheelOptions.setTitleText(title);
    }



    public interface OnOptionsSelectListener {
        void onOptionsSelect(int options1, int option2, int options3);
    }
}
